package com.zeta.plan.mapper;

import com.zeta.plan.model.dto.UserDTO;
import com.zeta.plan.model.entity.UserDO;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper {
    /**
     * 添加用户
     * @param userDO
     * @return
     */
    Long insertUser(UserDO userDO);

    /**
     * 根据用户名查找用户
     * @param username
     * @return
     */
    UserDO getUserByUsername(String username);

    /**
     *
     * @param username
     * @param password
     * @return
     */
    UserDO getUserByUsernameAndPassword(String username, String password);

    /**
     * 更新secret
     * @param id
     * @param secret
     */
    Integer updateSecretByID(Long id, String secret);

    /**
     * 根据username删除用户
     * @param username
     * @return
     */
    Long deleteUserByUsername(String username);

    /**
     * 根据用户名查询secret
     * @param username
     * @return
     */
    String findSecretByUsername(String username);

    /**
     * 根据用户名查询账户禁用状态
     * @param username
     * @return
     */
    boolean findEnabledByUsername(String username);

    /**
     * 根据用户名更新enabled
     * @param username
     * @return
     */
    int updateEnabledByUsername(String username, boolean enabled);

    /**
     * 根据id查询user
     * @param id
     * @return
     */
    UserDO findUserById(Long id);

    /**
     * 根据用户名获取salt
     * @param username
     * @return
     */
    String findSaltByUsername(String username);

    /**
     * 根据用户名和密码更新密码
     * @param username
     * @param oldPassword
     * @param newPassword
     * @return
     */
    Integer updatePasswordByUsernameAndPassword(String username, String oldPassword, String newPassword);

    /**
     * 更新用户信息
     * @param userDTO
     * @return
     */
    Integer updateUserInfoById(UserDTO userDTO);
}
